Add blog post: accessibility-in-2026-a-practical-guide.mdx#148
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
CodeAnt AI is reviewing your PR. |
📝 WalkthroughWalkthroughAdds a new MDX blog post about accessibility in 2026, including frontmatter metadata, an article section on key accessibility concepts and a TypeScript/JSX example, and a closing community discussion prompt. ChangesAccessibility blog post
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdxParsing error: Invalid left-hand side in prefix operation. (1:2) Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| --- | ||
| title: 'Accessibility in 2026: A Practical Guide' | ||
| description: 'A comprehensive guide to accessibility for modern frontend development in 2026.' | ||
| date: '2026-06-26' | ||
| tags: ['Accessibility', 'Frontend', '2026'] | ||
| published: true | ||
| image: './images/post-image.png' | ||
| --- |
There was a problem hiding this comment.
Suggestion: This post is saved under content/blog-post-2026-06-26/, but the content loader is configured to index only content/blog/**/*.mdx, so this article will never be built or shown on blog/tag pages. Move the file into the content/blog/ tree (or expand the collection pattern) so it is actually ingested. [api mismatch]
Severity Level: Major ⚠️
- ⚠️ New accessibility article missing from `/blog` listing page.
- ⚠️ Article excluded from homepage latest posts carousel.
- ⚠️ Sitemap omits URL, reducing SEO visibility.
- ⚠️ Tags page ignores article's tag metadata.Steps of Reproduction ✅
1. Build the project with Velite configured in `velite.config.ts:11-31`, where the `posts`
collection uses `pattern: 'blog/**/*.mdx'` and `root: 'content'`, meaning only files under
`content/blog/**/*.mdx` are ingested.
2. Note that the new article file is located at
`content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx:1-81`, which
does not match the `blog/**/*.mdx` pattern, so Velite does not include it in the generated
`posts` array exported from `#site/content`.
3. Request the blog listing page at `/blog` implemented in `app/blog/page.tsx:1-37`, which
renders `sortedPosts = sortPosts(posts.filter((post) => post.published))`; the new article
is absent from `posts`, so it never appears in the listing or pagination.
4. Request the individual blog route that uses `posts` in
`app/blog/[...slug]/page.tsx:18-22,71-80`, or inspect the homepage latest posts in
`app/page.tsx:13-26` and sitemap generation in `app/sitemap.ts:8-16` and tags page in
`app/tags/page.tsx:3-17`; in all cases, the new article is missing because it is outside
the `content/blog/**/*.mdx` collection path.(Use Cmd/Ctrl + Click for best experience)
Prompt for AI Agent 🤖
This is a comment left during a code review.
**Path:** content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx
**Line:** 1:8
**Comment:**
*Api Mismatch: This post is saved under `content/blog-post-2026-06-26/`, but the content loader is configured to index only `content/blog/**/*.mdx`, so this article will never be built or shown on blog/tag pages. Move the file into the `content/blog/` tree (or expand the collection pattern) so it is actually ingested.
Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix|
CodeAnt AI finished reviewing your PR. |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx (2)
24-34: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winReplace vacuous example with an actual accessibility pattern.
The
useModernPatternexample doesn't demonstrate any accessibility technique and would confuse readers expecting practical guidance. Replace it with a real 2026-relevant pattern such as focus management, reduced motion preference, or keyboard navigation.// Example: respecting user motion preferences function usePrefersReducedMotion() { const [prefersReducedMotion, setPrefersReducedMotion] = React.useState(false); React.useEffect(() => { const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)'); setPrefersReducedMotion(mediaQuery.matches); const handler = (event: MediaQueryListEvent) => { setPrefersReducedMotion(event.matches); }; mediaQuery.addEventListener('change', handler); return () => mediaQuery.removeEventListener('change', handler); }, []); return prefersReducedMotion; }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx` around lines 24 - 34, The example in useModernPattern is just a placeholder and does not show a real accessibility technique, so replace it with a practical pattern readers can use, such as focus management, reduced motion, or keyboard navigation. Update the snippet to a concrete accessibility hook/example with real behavior, and rename the symbol to something specific like usePrefersReducedMotion or another actual pattern so the code and surrounding explanation clearly match the accessibility topic.
53-71: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winDemonstrate accessible patterns in the "Real-World Example."
The component uses generic
<div>wrappers and lacks semantic structure, selection state, and robust key handling. In an accessibility guide, readers will copy this pattern verbatim.// Accessible list of actionable items interface Props { items: string[]; activeItem: string | null; onActivate: (value: string) => void; } function AccessibleActionList({ items, activeItem, onActivate }: Props) { return ( <ul role="list" aria-label="Available actions"> {items.map((item, index) => ( <li key={`${item}-${index}`}> <button aria-pressed={activeItem === item} onClick={() => onActivate(item)} className="focus:ring-2 focus:ring-offset-2" > {item} </button> </li> ))} </ul> ); }Also note:
key={item}at line 64 is unsafe ifdatacontains duplicates or is reordered. Use a stable identifier or composite key.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx` around lines 53 - 71, The “Real-World Example” in the accessibility guide should be updated to demonstrate a semantic, accessible pattern instead of a generic wrapper-based list. Replace the current Component example with a clearer accessible list component (for example, an AccessibleActionList-style pattern) that uses list semantics, exposes selection state, and includes a keyboard/focus-friendly button interaction. Also fix the keying strategy in the map callback by avoiding a raw item key from the current Component and using a stable unique identifier or composite key so duplicates and reordering are handled safely.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx`:
- Line 7: The frontmatter image reference in the blog post metadata points to a
missing asset, so update the `image` field in the post frontmatter or add the
referenced file under the post’s images folder. Use the `image` entry in
`accessibility-in-2026-a-practical-guide.mdx` to locate the broken path and
ensure it resolves to an existing post image.
---
Nitpick comments:
In `@content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx`:
- Around line 24-34: The example in useModernPattern is just a placeholder and
does not show a real accessibility technique, so replace it with a practical
pattern readers can use, such as focus management, reduced motion, or keyboard
navigation. Update the snippet to a concrete accessibility hook/example with
real behavior, and rename the symbol to something specific like
usePrefersReducedMotion or another actual pattern so the code and surrounding
explanation clearly match the accessibility topic.
- Around line 53-71: The “Real-World Example” in the accessibility guide should
be updated to demonstrate a semantic, accessible pattern instead of a generic
wrapper-based list. Replace the current Component example with a clearer
accessible list component (for example, an AccessibleActionList-style pattern)
that uses list semantics, exposes selection state, and includes a
keyboard/focus-friendly button interaction. Also fix the keying strategy in the
map callback by avoiding a raw item key from the current Component and using a
stable unique identifier or composite key so duplicates and reordering are
handled safely.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 4b79d523-8c16-4005-bb8e-ed3e7ca28418
📒 Files selected for processing (1)
content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx
| date: '2026-06-26' | ||
| tags: ['Accessibility', 'Frontend', '2026'] | ||
| published: true | ||
| image: './images/post-image.png' |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify image asset exists
fd "post-image.png" content/ || echo "Image not found"
fd --type directory "images" content/blog-post-2026-06-26/ || echo "Images directory not found"Repository: deepu0/frontend-junction
Length of output: 162
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Locate the MDX file and any matching image asset or directory
git ls-files 'content/blog-post-2026-06-26/**' | sed -n '1,120p'
printf '\n---\n'
fd --hidden --type f 'post-image.png' content/ || true
printf '\n---\n'
fd --hidden --type d 'images' content/blog-post-2026-06-26/ || true
printf '\n---\n'
# Show nearby files in the post directory for context
fd --hidden --type f . content/blog-post-2026-06-26/ | sed -n '1,120p'Repository: deepu0/frontend-junction
Length of output: 323
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Inspect the post frontmatter and file layout around the image reference
file='content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx'
wc -l "$file"
printf '\n---\n'
cat -n "$file" | sed -n '1,40p'Repository: deepu0/frontend-junction
Length of output: 1994
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Check whether the image asset is tracked anywhere in the repository
git ls-files | rg -n '(^|/)post-image\.png$|(^|/)accessibility-in-2026-a-practical-guide\.mdx$|(^|/)blog-post-2026-06-26/' || trueRepository: deepu0/frontend-junction
Length of output: 239
Add the referenced post image or update the frontmatter path. image: './images/post-image.png' points to content/blog-post-2026-06-26/images/post-image.png, but that asset is not present, so the post will render with a broken image unless the file is added or the path is corrected.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/blog-post-2026-06-26/accessibility-in-2026-a-practical-guide.mdx` at
line 7, The frontmatter image reference in the blog post metadata points to a
missing asset, so update the `image` field in the post frontmatter or add the
referenced file under the post’s images folder. Use the `image` entry in
`accessibility-in-2026-a-practical-guide.mdx` to locate the broken path and
ensure it resolves to an existing post image.
User description
Blog post about Accessibility for Frontend Junction
CodeAnt-AI Description
Publish a new guide on accessibility for frontend development in 2026
What Changed
Impact
✅ New accessibility guidance for readers✅ Easier onboarding to accessibility basics✅ More practical frontend learning content💡 Usage Guide
Checking Your Pull Request
Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.
Talking to CodeAnt AI
Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:
This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.
Example
Preserve Org Learnings with CodeAnt
You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:
This helps CodeAnt AI learn and adapt to your team's coding style and standards.
Example
Retrigger review
Ask CodeAnt AI to review the PR again, by typing:
Check Your Repository Health
To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.
Summary by CodeRabbit